import Vue from 'vue'
// import Router from '@/router'
import {router,RouterMount} from '@/router.js'  //路径换成自己的

const openPage = {};
function isObject (value) {
	return toString.call(value) === '[object Object]'
}
function isString (value) {
	return toString.call(value) === '[object String]'
}
// 等同于 uni.navigateTo() 这个方法会向 history 栈添加一个新的记录，所以，当用户点击浏览器后退按钮时，则回到之前的 URL。
openPage.push = function(args){
	let name, query = {};
	switch (true) {
		case isObject(args):
			// 有参数
			// ({name, query = {}} = args)
			name = args.name;
			query = args.query;
			// #ifdef H5
			router.push({path:'/' + name,query:query});
			// #endif
			// #ifndef H5
			router.push({name:name,params:query});
			// #endif
			break
		case isString(args):
			//无参数
			name = args;
			// #ifdef H5
			router.push({path:'/' + name});
			// #endif
			
			// #ifndef H5
			router.push({name:name});
			// #endif
			break
		default:
			throw new Error('参数必须是对象或者字符串')
	}
}
//  等同于 uni.redirectTo() 会向 history 添加新记录，而是跟它的方法名一样 —— 替换掉当前的 history 记录
openPage.replace = function(args){
	let name, query = {};
	switch (true) {
		case isObject(args):
			// 有参数
			// ({name, query = {}} = args)
			// #ifdef H5
			router.replace({path:'/' + name,query:query});
			// #endif
			
			// #ifndef H5
			router.replace({name:name,params:query});
			// #endif
			break
		case isString(args):
			//无参数
			name = args
			// #ifdef H5
			router.replace({path:'/' + name});
			// #endif
			
			// #ifndef H5
			router.replace({name:name});
			// #endif
			break
		default:
			throw new Error('参数必须是对象或者字符串')
	}
}
//   等同于 uni.reLaunch() 不会向 history 添加新记录，而是将所有的页面都关掉，打开一个新的页面
openPage.replaceAll = function(args){
	let name, query = {};
	switch (true) {
		case isObject(args):
			// 有参数
			// ({name, query = {}} = args)
			// #ifdef H5
			router.replaceAll({path:'/' + name,query:query});
			// #endif
			
			// #ifndef H5
			router.replaceAll({name:name,params:query});
			// #endif
			break
		case isString(args):
			//无参数
			name = args
			// #ifdef H5
			router.replaceAll({path:'/' + name});
			// #endif
			
			// #ifndef H5
			router.replaceAll({name:name});
			// #endif
			break
		default:
			throw new Error('参数必须是对象或者字符串')
	}
}
//  等同于 uni.switchTab()  打开 uni-app 自带的tab 菜单
openPage.pushTab = function(args){
	let name;
	switch (true) {
		case isObject(args):
			name = args.name
			router.pushTab({name:name});
			break
		case isString(args):
			//无参数
			name = args
			router.pushTab({name:name});
			break
		default:
			throw new Error('参数必须是对象或者字符串')
	}
}

export default openPage